Ir al contenido

Generación de clave

Introducción

En el sistema se utilizan claves ECDSA para la firma de los JWTs de autenticación. Las claves ECDSA son utilizadas por su seguridad y ligera en relación a las claves RSA tradicionales. Encomparação, una clave ECDSA de 256 bits es tan segura como una clave RSA de 3084 bits.

Una clave ECDSA está formada por dos partes: la clave privada y la clave pública. Cada una de ellas tiene una función definida:

  • Chave Privada: La clave privada se utilizará para la firma de susJWTs, antes de enviarlos al servidor de autenticación.
  • Chave Pública: La clave pública será utilizada por el servidor de autenticación para que el origen del token sea verificado como legítimo.
En hipótesis alguna exponga su clave privada. Al exponerla, estará permitiendo que un atacante se pase por usted y realice acciones en su nombre en el servidor.

Para la generación de un par de claves, algún toolkit de cifrado debe estar instalado en su máquina. En el transcurso de este tutorial, utilizaremosOpenSSL, una alternativa Open Source para la generación de claves criptográficas.

Instalando OpenSSL

Linux:

OpenSSL es una herramienta nativa en la mayor parte de las distribuciones Linux. No hay necesidad de instalarlo. Utilice OpenSSL a través de la ordenopensslen la terminal.

MacOS:

En la mayoría de los casos, OpenSSL estará instalado. Si la ordenopensslno existe, lo instale a través de Homebrew de la siguiente forma:

  1. ConHomebrewinstalado en una terminal, escriba la orden abajo
shell
brew install openssl@1.1
  1. Después de la instalación, utilice OpenSSL a través de la ordenopensslen la terminal.

Windows:

El paquete OpenSSL es una de las dependencias de la instalación de git para Windows. Después de instalar, utilice OpenSSL a través de la ordenopensslen la terminal git.

Generando claves ECDSA

Para generar una clave privada ECDSA, ejecute la siguiente orden en OpenSSL:

shell
openssl ecparam -name secp256k1 -genkey -noout -out priv-key.pem
Entendiendo la orden:

  • ecparam: Generación de clave por curva elíptica con parámetros
  • name secp256k1: Nombre del algoritmo de generación de clave
  • genkey: Parámetro utilizado para generar una clave
  • noout: Parámetro utilizado para que OpenSSL no añada una versión codificada de los parámetros de generación de la clave en el archivo .pem
  • out priv-key. pem: Parámetro utilizado para definir el nombre del archivo donde se guardará la clave

Puede comprobar su clave recién creada utilizando la ordencaten el archivopriv-key.pem. La clave debe parecerse a continuación:``` -----BEGIN EC PRIVATE KEY----- MHQCAQEEID+WM4WfWmD9ORXXRz5jUjQerHro6CTpeG9M0fDTEAT3oAcGBSuBBAAK oUQDQgAEalizNT3hu7qU56JQ4L1goFrRL11/c7gvTVBWYvXY52UQgFPUDgIrBtAl iaRmnJZFmJim7FTzqG8ZZ5eQdEzu2Q== -----END EC PRIVATE KEY-----

Para derivar la clave pública de la clave privada utilizando OpenSSL, ejecute:
```shell
openssl ec -in priv-key.pem -pubout > pub-key.pem
Entendiendo la orden:

  • ec: Análisis de curva elíptica
  • -in priv-key. pem: Parámetro utilizado para indicar la fuente de la clave a ser analizada
  • -pubout: Parámetro utilizado para indicar que la salida debe ser una clave pública
  • pub-key.pem: Directorio de salida para el archivopub-key.pemPuede comprobar su clave recién creada utilizando la ordencaten el archivopub-key.pem. La clave pública generada debe parecerse con:``` -----BEGIN PUBLIC KEY----- MFYwEAYHKoZIzj0CAQYFK4EEAAoDQgAEalizNT3hu7qU56JQ4L1goFrRL11/c7gv TVBWYvXY52UQgFPUDgIrBtAliaRmnJZFmJim7FTzqG8ZZ5eQdEzu2Q== -----END PUBLIC KEY-----
## Consideraciones Finales
La generación y la gestión adecuada de las claves ECDSA son fundamentales para la seguridad del sistema. Mantenga sus claves privadas en un lugar seguro y utilice solo la clave pública para configurar el sistema.
## Lea también
- [Comunicação entre Servidor ACS e CPE](./comunicacao%20entre%20servidor%20acs%20e%20cpe)